package com.jdcjk.util;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.util.Log;

import com.jdcjk.MainApp;
import com.jdcjk.R;

/**
 * Created by Administrator on 2017/2/21 0021.
 */

public class L {
    public static final String LOG_TAG = MainApp.getInstance().getResources().getString(R.string.app_name);
    public static boolean DEBUG = true;

    /**
     * 初始化Log打印工具类
     * 根据当前app是否是debug版本设置DEBUG值
     * 只有当当前为DEBUG版本时才会调用Log打印信息
     * 一般可于Application类中onCreate方法中s调用
     *
     * @param context
     */
    public static void init(Context context) {
        DEBUG = isDebugable(context);
    }

    /**
     * information
     *
     * @param msg 打印的信息
     */
    public static void i(String msg) {
        i(LOG_TAG, msg);
    }

    /**
     * information消息
     *
     * @param TAG 标签
     * @param msg 打印的信息
     */
    public static void i(String TAG, String msg) {
        if (DEBUG) Log.i(TAG, msg);
    }

    /**
     * information消息
     *
     * @param TAG 标签
     * @param msg 打印的信息
     * @param tr  异常类型
     */
    public static void i(String TAG, String msg, Throwable tr) {
        if (DEBUG) Log.i(TAG, msg, tr);
    }

    /**
     * debug调试
     *
     * @param msg 打印的信息
     */
    public static void d(String msg) {
        d(LOG_TAG, msg);
    }

    /**
     * debug调试
     *
     * @param TAG 标签
     * @param msg 打印的信息
     */
    public static void d(String TAG, String msg) {
        if (DEBUG) Log.d(TAG, msg);
    }

    /**
     * debug调试
     *
     * @param TAG 标签
     * @param msg 打印的信息
     * @param tr  异常类型
     */
    public static void d(String TAG, String msg, Throwable tr) {
        if (DEBUG) Log.d(TAG, msg, tr);
    }

    /**
     * error错误
     *
     * @param msg 打印的信息
     */
    public static void e(String msg) {
        e(LOG_TAG, msg);
    }

    /**
     * error错误
     *
     * @param TAG 标签
     * @param msg 打印的信息
     */
    public static void e(String TAG, String msg) {
        if (DEBUG) Log.e(TAG, msg);
    }

    /**
     * error错误
     *
     * @param TAG 标签
     * @param msg 打印的信息
     */
    public static void e(String TAG, String msg, Throwable tr) {
        if (DEBUG) Log.e(TAG, msg, tr);
    }

    /**
     * verbose
     *
     * @param msg 打印的信息
     */
    public static void v(String msg) {
        v(LOG_TAG, msg);
    }

    /**
     * verbose
     *
     * @param TAG 标签
     * @param msg 打印的信息
     */
    public static void v(String TAG, String msg) {
        if (DEBUG) Log.v(TAG, msg);
    }

    /**
     * verbose
     *
     * @param TAG 标签
     * @param msg 打印的信息
     * @param tr  异常类型
     */
    public static void v(String TAG, String msg, Throwable tr) {
        if (DEBUG) Log.v(TAG, msg, tr);
    }

    /**
     * warning警告
     *
     * @param msg 打印的信息
     */
    public static void w(String msg) {
        w(LOG_TAG, msg);
    }

    /**
     * warning警告
     *
     * @param TAG 标签
     * @param msg 打印的信息
     */
    public static void w(String TAG, String msg) {
        if (DEBUG) Log.w(TAG, msg);
    }

    /**
     * warning警告
     *
     * @param TAG 标签
     * @param msg 打印的信息
     * @param tr  异常类型
     */
    public static void w(String TAG, String msg, Throwable tr) {
        if (DEBUG) Log.w(TAG, msg, tr);
    }

    public static boolean isDebugable(Context context) {
        try {
            ApplicationInfo info = context.getApplicationInfo();
            return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
        } catch (Exception e) {

        }
        return false;
    }
}
